/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.dominio.servicio.impl;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dao.IDAOMovimientoCajaChica;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.dominio.common.ESTADO_RESULTADO;
import pe.com.cotelasa.scp.dominio.common.ResultadoServicio;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.dominio.service.IServicioMovimientoCajaChica;
import pe.com.cotelasa.scp.entidad.CajaChica;
import pe.com.cotelasa.scp.entidad.MovimientoCajaChica;

/**
 *
 * @author DESARROLLO01
 */
@Service
public class ServicioMovimientoCajaChicaImpl implements IServicioMovimientoCajaChica, Serializable {

    private static final long serialVersionUID = -4727188952267726795L;
    @Inject
    private IDAOMovimientoCajaChica daoMovCajaChica;

    @Override
    public void registrarMovimiento(MovimientoCajaChica movCajaChica) throws ServiceException {

        try {
            movCajaChica.setEstadoRegistro(ESTADO_REGISTRO.ACTIVO.getValor());
            daoMovCajaChica.insertar(movCajaChica);
        } catch (DAOException e) {
            throw new ServiceException(e.getMessage(), e);
        }

    }

    @Override
    public MovimientoCajaChica conseguirArticuloPorId(Integer idMovimientoCajaChica) throws ServiceException {
        try {
            return daoMovCajaChica.obtenerEntidadPorId(MovimientoCajaChica.class, idMovimientoCajaChica);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }

    @Override
    public ResultadoServicio editarMovimiento(MovimientoCajaChica movCajaChica) throws ServiceException {

        ResultadoServicio resultadoServicio = new ResultadoServicio(ESTADO_RESULTADO.EXITOSO);
        try {
            daoMovCajaChica.actualizar(movCajaChica);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
        return resultadoServicio;

    }

    @Override
    public void eliminarMovimiento(MovimientoCajaChica movCajaChica) throws ServiceException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    @Transactional
    public Collection<MovimientoCajaChica> listarTodosMovCajaChica(CajaChica cajaChica) throws ServiceException {

        try {
            return daoMovCajaChica.listarMovActivosCajaChica(cajaChica);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }

    }

    @Override
    public Collection<MovimientoCajaChica> listarMovCajaChicaActiva(CajaChica cajaChica) throws ServiceException {

        try {
            return daoMovCajaChica.listarMovActivosCajaChica(cajaChica);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }

    }

    @Override
    public Collection<MovimientoCajaChica> listarMovimientoPorFiltro(MovimientoCajaChica movCajaChica, Date fechaInicio, Date fechaFinal) throws ServiceException {
        try {
            return daoMovCajaChica.listarMovimientoPorFiltro(movCajaChica, fechaInicio, fechaFinal);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }
}
